<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>事件处理</title>
</head>
<body>
  <div id="test"></div>

  <!-- 引入库：先引入核心库，再引入操作DOM的扩展库 -->
  <script type="text/javascript" src="../js/react.development.js"></script>
  <script type="text/javascript" src="../js/react-dom.development.js"></script>
  <!-- 将jsx转为js -->
  <script type="text/javascript" src="../js/babel.min.js"></script>
  <script type="text/babel">    //必须写babel，因为默认js
    class Demo extends React.Component{
      /*
        (1).通过onXxx属性指定事件处理函数（注意大小写）
          a.React使用的是自定义（合成）事件，而不是使用的原生DOM事件  ————为了更好的兼容性
          b.React中的事件是通过事件委托方式处理的（委托给最外层的元素）  ————为了高效
        (2).通过event.target得到发生事件的DOM元素对象     ——————不要过渡使用ref
      */
      myRef = React.createRef()

      showData = ()=>{
        console.log(this)
        alert(this.myRef.current.value)
      }

      //这里的ref可以省略，因为（发生事件的元素正好是你要操作的元素）这种情况可以不使用ref
      showData2 = (event)=>{
        alert(event.target.value)
      }

      render(){
        return (
          <div>
            <input ref={this.myRef} type="text" placeholder='点击按钮提示'/>
            <button onClick={this.showData}>提示</button><br/>
            <input onBlur={this.showData2} type="text" placeholder='失去焦点提示'/>
          </div>
        )
      }
    }

    ReactDOM.render(<Demo/>, document.getElementById('test'))
  </script>
</body>
</html>